package com.cz.basetool.ui_work.util.system.gps;


import com.cz.basetool.CodeTool;

/** 状态标志位的修改以及获取工具类 */
public class StateFlag {

	/** 状态标志位 */
	private static int StateFlag = 0x00;

	/**
	 * 获取状态标志位
	 * 
	 * @return 返回4字节状态标志位
	 */
	public static String getStateFlag() {
		return CodeTool.AddZeroToFront(Integer.toHexString(StateFlag), 4);
	}

	/**
	 * 设置ACC状态
	 * 
	 * @param i
	 *            0:ACC关；1:ACC开
	 */
	public static void setACCState(int i) {
		setFlagValue(i, 0);
	}

	/**
	 * 设置定位状态
	 * 
	 * @param i
	 *            0:未定位；1:定位
	 */
	public static void setLocationState(int i) {
		setFlagValue(i, 1);
	}

	/**
	 * 设置纬度状态
	 * 
	 * @param i
	 *            0:北纬；1:南纬
	 */
	public static void setLatitudeState(int i) {
		setFlagValue(i, 2);
	}

	/**
	 * 设置经度状态
	 * 
	 * @param i
	 *            0:东经；1:西经
	 */
	public static void setLongitudeState(int i) {
		setFlagValue(i, 3);
	}

	/**
	 * 设置运营状态
	 * 
	 * @param i
	 *            0:运营状态；1:停运状态
	 */
	public static void setOperateState(int i) {
		setFlagValue(i, 4);
	}

	/**
	 * 设置经纬度加密状态
	 * 
	 * @param i
	 *            0:经纬度未经保密插件加密；1:经纬度已经保密插件加密
	 */
	public static void setLatitudeAndLongitudeEncryptionState(int i) {
		setFlagValue(i, 5);
	}

	/**
	 * 设置车辆油路状态
	 * 
	 * @param i
	 *            0:车辆油路正常；1:车辆油路断开
	 */
	public static void setVehicleOilState(int i) {
		setFlagValue(i, 10);
	}

	/**
	 * 设置车辆电路状态
	 * 
	 * @param i
	 *            0:车辆电路正常；1:车辆电路断开
	 */
	public static void setVehicleCircuitState(int i) {
		setFlagValue(i, 11);
	}

	/**
	 * 设置车门状态
	 * 
	 * @param i
	 *            0:车门解锁；1:车门加锁
	 */
	public static void setCarDoorState(int i) {
		setFlagValue(i, 12);
	}
	

	/**
	 * 设置某一位为0或者1
	 * 
	 * @param falg
	 *            设置为0还是1
	 * @param bit
	 *            第几位
	 */
	private static void setFlagValue(int falg, int bit) {
		if (falg == 0) {
			StateFlag &= ~(1 << bit);
		} else if (falg != 0) {
			StateFlag |= 1 << bit;
		}
	}
	
	public static int getFlagValue(int bit){
		if((StateFlag & 1 << bit) == 0){
			return 0;
		}else{
			return 1;
		}
	}

}